home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / util / libs / VirtualMem12.lha / VirtualMem / Examples / PriorityDemo.c next >
Encoding:
C/C++ Source or Header  |  1996-11-16  |  1.3 KB  |  61 lines

  1. /* Memory object priority demo for VirtualMem */
  2. /* Written by Kalle Sandström */
  3.  
  4. #include <exec/types.h>
  5. #include <exec/memory.h>
  6. #include <exec/libraries.h>
  7. #include <libraries/virtualmem.h>
  8.  
  9. #include <proto/exec.h>
  10. #include <proto/virtualmem.h>
  11.  
  12. #define BLOCKCOUNT 80    /* How many 64K blocks to allocate? */
  13.  
  14. #ifdef __GNUC__
  15. int __nocommandline=TRUE;
  16. #endif /* __GNUC__ */
  17.  
  18. struct Library *VirtualMemBase;
  19.  
  20. int main()
  21. {
  22.   APTR blocks[BLOCKCOUNT+1];
  23.   UBYTE i;
  24.  
  25.   if(!(VirtualMemBase=OpenLibrary(VIRTUALMEMNAME,0L)))exit(20);
  26.   for(i=0;i<BLOCKCOUNT-1;i++)blocks[i]=NULL;
  27.   for(i=0;i<BLOCKCOUNT-1;i++)
  28.   {
  29.     blocks[i]=CreateVMem(65536,MEMF_CLEAR,0,NULL);
  30.     printf("%s %d\n",blocks[i]?"Got":"Failed",i);
  31.     if(blocks[i])
  32.     {
  33.       STRPTR strmem;
  34.  
  35.       if(strmem=LockVMem(blocks[i]))
  36.       {
  37.         sprintf(strmem,"Old McDonald had a hamburger stand, ei-ei-o (%d)",i);
  38.         UnlockVMem(blocks[i]);
  39.       }
  40.     }
  41.   }
  42.   blocks[BLOCKCOUNT]=NULL;
  43.   AutoAdjustPri(blocks);
  44.   for(i=0;i<BLOCKCOUNT-1;i++)
  45.   {
  46.     if(blocks[i])
  47.     {
  48.       STRPTR mem;
  49.  
  50.       if(mem=LockVMem(blocks[i]))
  51.       {
  52.         printf("Locked %d (\"%s\")\n",i,mem);
  53.         UnlockVMem(blocks[i]);
  54.       } else printf("Didn't lock %d\n",i);
  55.       ChangeVMemPri(blocks[i],-BLOCKCOUNT);
  56.     }
  57.   }
  58.   for(i=0;i<BLOCKCOUNT-1;i++)if(blocks[i])RemoveVMem(blocks[i]);
  59.   CloseLibrary(VirtualMemBase);
  60. }
  61.